時系列特化データベースの Amazon Timestream が一般公開(GA)しました!! 時系列データの保存・検索・分析にピッタリ!
約2年を経て、ついに、ついに、ついに、Amazon Timestreamが一般公開になりました!!
Amazon Timestreamを使えば、IoT機器などから収集した時系列データの保存や分析が簡単にできるようになります。 一言で言えば、時系列データに特化したデータベースです!
Amazon Timestreamとは
Amazon Timestream は、IoT および運用アプリケーションに適した、高速でスケーラブルな完全マネージド型の時系列データベースサービスです。1 日あたり数兆規模のイベントを、リレーショナルデータベースの 1/10 のコストで簡単に保存および分析できます。IoT デバイスや IT システムの普及や、産業機器のスマート化により、時系列データ (時間の経過に伴うモノの変化を記録したデータ) は、急速に増加しているデータ型の 1 つです。
Timestream は、時系列専用データベースであるため、データを時間間隔で効率的に保存および処理できます。Timestream を使用すれば、DevOps のログデータ、IoT アプリケーションのセンサーデータ、設備保全の産業用テレメトリデータを簡単に保存および分析できます。
https://aws.amazon.com/jp/timestream/
Amazon Timestreamの特徴
サーバーレス
なんとサーバーの管理は不要です。Amazon Timestreamは自動的にスケーリングしてデータベース容量やパフォーマンスをチューニングします。
データライフサイクル管理
例えば下記のような管理ができます。
- 最近のデータ:メモリストアに保存
- 履歴データ:磁気ストアに保存
それぞれに指定できる最短・最長期間は下記となっています。
ストア種類 | 最短 | 最長 |
---|---|---|
メモリストア | 1時間 | 12ヶ月 |
磁気ストア | 1日 | 200年 |
簡単なデータアクセス
「直近のデータはデータベース(たとえばDynamoDB)にあるが一定期間後にS3に移す」といった事はあると思います。 このような場合に全データを検索しようとすると、DynamoDBとS3に対する検索を行うため、異なる手段・仕組みが必要になります。 しかし、Amazon Timestreamでは、メモリストアと磁気ストアを意識することなく、データ検索が行えるのです。
時系列専用データベース
Amazon Timestreamは時系列専用データベースであるため、データ保存や検索などの最適化が行われています。 また、平準化・近似・補完といった組み込み分析関数をクエリで使うことができます。
たとえば、interpolate_linear(timeseries, array[timestamp])
を使えば、線形補間を使用して欠落データを埋めることができます。
データの暗号化をサポート
すべてのデータはKMSによる暗号化をサポートしています。
Amazon Timestreamの料金
3種類に対して課金されます。 自前で仕組みを組むよりもお得になっていると思います。
下記はオハイオの金額です。
書き込みに対する課金
- 1KBのサイズが100万件:0.50 USD
ストレージに対する課金
1GBあたりの格納時間で課金されます。
ストア種類 | 1GB/時あたりの料金 |
---|---|
メモリストア | 0.036 USD (1GB/日で約0.86 USD) |
SSDストア | 0.0004167 USD (1GB/日で約0.01 USD) |
磁気ストア | 0.0000411 USD(1GB/月で約0.03 USD) |
※SSDストアは近日公開予定
クエリに対する課金
スキャンされたデータ量に対して課金されます。
- 1GBあたりのスキャン量:0.01 USD
さっそく使ってみる
リージョン選択
GA時点では下記のリージョンがサポートされています。
- 米国東部 (バージニア北部)
- 米国東部 (オハイオ)
- 欧州 (アイルランド)
- 米国西部 (オレゴン)
データベースを作成する
データベースを作成します。
ここではSample Database
を選択します。
また、サンプルデータセットにはIoT
を選択しています。このサンプルデータには、トラックの速度・場所といった時系列データが含まれています。
さくっと作れました。
テーブルもできています。
クエリを実行して、テーブルに保存されているサンプルデータを眺めてみる
左側のメニューにあるQuery Editor
を選択します。
データベースSampleDB
のIoT
テーブルの定義は下記のようです。
Preview data
を選択すると、サンプルクエリが現れました。
実行すると下記データが現れました。
さまざまなサンプルクエリがある
Sample Queries
を選択すると、さまざまなサンプルクエリがありました。
過去24時間のフリート内の各トラックの最新の燃料測定値を取得する
上から2つ目のサンプルクエリを実行してみます。
Get the most recent fuel reading of each truck in the fleet in the past 24 hours.
クエリ自体は下記になっています。
-- Get the most recent fuel reading of each truck in the fleet in the past 24 hours. WITH latest_recorded_time AS ( SELECT truck_id, max(time) as latest_time FROM "sampleDB".IoT WHERE measure_name = 'fuel-reading' AND time >= ago(24h) GROUP BY truck_id ) SELECT b.truck_id, b.fleet, b.make, b.model, b.time, b.measure_value::double as last_reported_fuel_reading FROM latest_recorded_time a INNER JOIN "sampleDB".IoT b ON a.truck_id = b.truck_id AND b.time = a.latest_time WHERE b.measure_name = 'fuel-reading' AND b.time > ago(24h) ORDER BY b.truck_id
実行結果は下記です。
さいごに
時系列データを溜めて、可視化・分析したい要件にピッタリのデータベースですね。ぜひ使っていきたいです!